import {PopupCommon} from '@/libs/popupCommon'
export function checkTimeSegments(data, startTime, endTime) {
    // 将 "HH:MM" 转换为分钟数（如 "01:02" → 62）
    function parseTime(timeStr) {
        const [hours, minutes] = timeStr.split(':').map(Number)
        // 验证时间格式有效性（0-23小时，0-59分钟）
        if (isNaN(hours) || isNaN(minutes) || hours < 0 || hours >= 24 || minutes < 0 || minutes >= 60) {
            PopupCommon.notify('error', `无效的时间格式: ${timeStr}`)
            throw new Error(`无效的时间格式: ${timeStr}`)
        }
        return hours * 60 + minutes
    }

    // 预处理所有时间段，转换为分钟数
    const timeSegments = data.map((item, index) => {
        try {
            const startMin = parseTime(item[startTime])
            const endMin = parseTime(item[endTime])
            return {startMin, endMin}
        } catch (e) {
            PopupCommon.notify('error', `时间段格式错误，开始时间不能大于结束时间`)
            throw new Error(`第 ${index} 个时间段格式错误: ${e.message}`)
        }
    })

    // 1. 检查是否存在 start > end 的项（不允许跨天，此类为异常）
    const hasStartGreaterThanEnd = timeSegments.some((seg) => seg.startMin > seg.endMin)

    // 2. 检查时间段是否重叠（非跨天场景）
    let hasOverlap = false
    if (timeSegments.length >= 2) {
        // 按开始时间排序（非跨天场景下，排序后仅需检查相邻项）
        const sorted = [...timeSegments].sort((a, b) => a.startMin - b.startMin)
        // 遍历相邻时间段，判断是否重叠
        for (let i = 0; i < sorted.length - 1; i++) {
            const current = sorted[i]
            const next = sorted[i + 1]
            // 若当前结束时间 > 下一个开始时间，则重叠
            if (current.endMin > next.startMin) {
                hasOverlap = true
                break
            }
        }
    }

    return {
        hasStartGreaterThanEnd, // 是否存在 start > end 的项
        hasOverlap // 是否存在时间段重叠
    }
}
